{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "d559e847-34e0-4ee4-9781-6dddbf03ff24",
   "metadata": {},
   "source": [
    "# 一、模型"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "cab1e457-265b-43f7-988c-c36db24e71d5",
   "metadata": {},
   "source": [
    "## （一）线性模型"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "bc1e9160-7dac-4b42-a393-19e5d2269f10",
   "metadata": {},
   "source": [
    "标准线性模型：$$\\mu_Y = \\beta_0 + \\sum_{j=1}^p\\beta_jX_j$$\n",
    "广义线性模型：$$g(\\mu_Y) = \\beta_0 + \\sum_{j=1}^p\\beta_jX_j$$\n",
    "\n",
    "标准线性模型中，假设Y呈正态分布；广义线性模型，可以放松Y为正态分布的假设，改为服从指数分布族中的一种分布即可。"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "087852db-1c5a-4274-a041-02ae47d3d608",
   "metadata": {},
   "source": [
    "### 1、回归模型"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "06860c35-73cd-4e1e-a11e-3306cd882af2",
   "metadata": {},
   "source": [
    "#### **(1) 线性回归**\n",
    "\n",
    "**回归模型**的核心是预测**连续型或离散型的数值结果**（如均值、率、计数等），而非直接分类。 "
   ]
  },
  {
   "cell_type": "markdown",
   "id": "3761c5a8-8697-4441-a34b-b1e50ba69c07",
   "metadata": {},
   "source": [
    "**多元线性模型：**\n",
    "$$y=\\beta_0+\\beta_1x_1+\\beta_2x_2+\\cdots+\\beta_kx_k +\\epsilon$$\n",
    "线性回归是一种基本的统计分析方法，有以下主要假设：\n",
    "\n",
    "- **线性关系假设**\n",
    "    - **自变量与因变量呈线性关系**：假设因变量$y$与自变量$x_1,x_2,\\cdots,x_p$之间存在线性关系，可表示为$y=\\beta_0+\\beta_1x_1+\\beta_2x_2+\\cdots+\\beta_px_p+\\epsilon$，其中$\\beta_0,\\beta_1,\\cdots,\\beta_p$是回归系数，$\\epsilon$是误差项。\n",
    "    - **实际意义**：意味着自变量的变化对因变量的影响是均匀的、成比例的。如在研究身高与体重的关系时，假设体重与身高呈线性关系，即身高每增加一定单位，体重会按照固定的比例增加。\n",
    "\n",
    "- **独立性假设**\n",
    "    - **观测值相互独立**：要求每个观测值$(x_{i1},x_{i2},\\cdots,x_{ip},y_i)$之间相互独立，即一个观测值的取值不会影响其他观测值的取值。在时间序列数据中，可能会存在自相关性，即当前观测值与过去的观测值相关，此时就不满足独立性假设。\n",
    "    - **实际意义**：保证样本数据是随机抽样得到的，不存在系统性的关联，使模型的估计和推断具有可靠性。\n",
    "\n",
    "- **正态性假设**\n",
    "    - **误差项服从正态分布**：假定误差项$\\epsilon$服从均值为$0$，方差为$\\sigma^2$的正态分布，即$\\epsilon\\sim N(0,\\sigma^2)$。这意味着大部分误差项的值集中在均值$0$附近，离均值越远，出现的概率越小。\n",
    "    - **实际意义**：基于正态分布的性质，可以进行参数的假设检验和置信区间估计等统计推断，为模型的有效性和可靠性提供理论依据。\n",
    "\n",
    "- **等方差性假设**\n",
    "    - **误差项方差恒定**：要求在不同的自变量取值下，误差项$\\epsilon$的方差始终保持不变，即$Var(\\epsilon_i)=\\sigma^2$，$i = 1,2,\\cdots,n$。如果误差项的方差随着自变量的变化而变化，就会出现异方差问题。\n",
    "    - **实际意义**：保证回归模型的估计量具有最小方差等良好的统计性质，使模型的预测和推断更加准确可靠。\n",
    "\n",
    "- **无多重共线性假设**\n",
    "    - **自变量间不存在高度线性相关**：假设自变量$x_1,x_2,\\cdots,x_p$之间不存在严格的线性关系，即不存在一个自变量可以由其他自变量线性表示的情况。若存在多重共线性，会导致回归系数的估计不准确，标准误差增大，模型的稳定性和解释力下降。\n",
    "    - **实际意义**：确保每个自变量对因变量的影响能够被独立地估计和解释，使模型具有良好的可解释性和预测能力。"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "f4d09a59-aade-40e1-832d-7804fbd2e527",
   "metadata": {},
   "source": [
    "##### **①检验线性回归是否显著**\n",
    "\n",
    "**F-statistic(F统计量)：** 线性关系是否显著的检验$$F = \\frac{SSR/k}{SSE/n-k-1} = \\frac{MSR}{MSE}\\sim F(k,n-k-1)$$\n",
    "\n",
    "其中：\n",
    "\n",
    "- 总平方和：$SST=\\sum(y_i-\\bar y)^2$;\n",
    "- 回归平方和：$SSR = \\sum(\\hat y -\\bar y)^2$;\n",
    "- 残差平方和:$SSE = \\sum(y_i - \\hat y_i)^2$\n",
    "- (多重)判定系数(反映了因变量的变差中被估计的回归方程所解释的比例判定系数越大，直线拟合地越好，在简单线性回归中，相关系数r的平方等于判定系数$R^2$)：$R^2=\\frac{SSR}{SST}=1-\\frac{SSE}{SST}$\n",
    "\n",
    "**Std.Error系数的估计标准误差**\n",
    "\n",
    "假设多元线性回归：$$y=\\beta_0+\\beta_1x_1+\\beta_2x_2+\\cdots+\\beta_kx_k +\\epsilon$$，要看**回归系数**是否显著，需要计算如下统计量：\n",
    "\n",
    "- 估计标准误差(是总体标准误差的无偏估计量):$$s_e = \\sqrt{\\frac{\\sum(y_i - \\hat y_i)^2}{n-k-1}} = \\sqrt{MSE}$$\n",
    "\n",
    "- $\\hat\\beta_i$的估计的标准差：$$s_{\\hat\\beta_i} = \\frac{s_e}{\\sqrt{\\sum x_i^2 - \\frac{1}{n}(\\sum x_i)^2}}$$\n",
    "\n",
    "- t统计量$$t _i= \\frac{\\hat\\beta_i}{s_{\\hat\\beta_i}}\\sim t(n-k-1)$$"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "43b608fa-f580-46e9-b9ec-3181da5369d1",
   "metadata": {},
   "source": [
    "##### **②[QQ图检验正态性](https://www.zhihu.com/question/36860572)**\n",
    "\n",
    "**QQ图目标**\n",
    "\n",
    "Q-Q图(Q-Q plot,  Quantile-Quantile plot)是为了从肉眼上直观地检查一组数据的分布是否符合正态分布。当检测是否为正态分布时，QQ图中直线斜率为待检测数据的标准差，截距为均值。若为正态分布或接近正态分布，则实际数据在Q-Q图上为直线(如下图所示)；\n",
    "<img src=\"ML img\\preview\\002 (1).jpg\" width=600 height=400>\n",
    "\n",
    "若不为正态分布，则实际数据在Q-Q图上就会偏离直线(如下图)\n",
    "\n",
    "<img src=\"ML img\\preview\\002 (2).jpg\" width=600 height=400>\n",
    "\n",
    "图中横坐标是理论上服从正态分布的数据的分位数，纵坐标是实际观测到的残差的分位数。"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b38629db-c202-4b49-84dc-7b5f17aa6867",
   "metadata": {
    "jp-MarkdownHeadingCollapsed": true
   },
   "source": [
    "##### **⑥计算线性回归模型的极大似然**\n",
    "在线性回归模型中，通常假设误差项服从正态分布，基于这一假设可以推导和计算极大似然函数值。以简单线性回归模型$$y_i=\\beta_0+\\beta_1x_i+\\epsilon_i$$为例，$i = 1,2,\\cdots,n$，其中$y_i$是观测的因变量值，$x_i$是自变量值，$\\beta_0$和$\\beta_1$是待估计的模型参数，$\\epsilon_i$是误差项，且$\\epsilon_i\\sim N(0,\\sigma^2)$，即误差项服从均值为0、方差为$\\sigma^2$的正态分布，计算步骤如下：\n",
    "\n",
    "- 写出似然函数:根据正态分布的概率密度函数，$\\epsilon_i$的概率密度函数为$$f(\\epsilon_i)=\\frac{1}{\\sqrt{2\\pi}\\sigma}e^{-\\frac{\\epsilon_i^2}{2\\sigma^2}}$$\n",
    "\n",
    "由于$y_i=\\beta_0+\\beta_1x_i+\\epsilon_i$，则$\\epsilon_i=y_i - \\beta_0-\\beta_1x_i$，所以$y_i$的概率密度函数为$$f(y_i|x_i,\\beta_0,\\beta_1,\\sigma^2)=\\frac{1}{\\sqrt{2\\pi}\\sigma}e^{-\\frac{(y_i - \\beta_0-\\beta_1x_i)^2}{2\\sigma^2}}$$\n",
    "\n",
    "假设观测值$y_1,y_2,\\cdots,y_n$相互独立，那么似然函数$$L(\\beta_0,\\beta_1,\\sigma^2;y_1,y_2,\\cdots,y_n,x_1,x_2,\\cdots,x_n)$$就是各个观测值的概率密度函数的乘积，即：\n",
    "\n",
    "$$L(\\beta_0,\\beta_1,\\sigma^2)=\\prod_{i = 1}^{n}\\frac{1}{\\sqrt{2\\pi}\\sigma}e^{-\\frac{(y_i - \\beta_0-\\beta_1x_i)^2}{2\\sigma^2}}$$\n",
    "\n",
    "- 取对数得到对数似然函数\n",
    "为了方便计算，对似然函数取对数，得到对数似然函数$l(\\beta_0,\\beta_1,\\sigma^2)$：\n",
    "\n",
    "$$l(\\beta_0,\\beta_1,\\sigma^2)=\\ln L(\\beta_0,\\beta_1,\\sigma^2)=-\\frac{n}{2}\\ln(2\\pi)-\\frac{n}{2}\\ln(\\sigma^2)-\\frac{1}{2\\sigma^2}\\sum_{i = 1}^{n}(y_i - \\beta_0-\\beta_1x_i)^2$$\n",
    "\n",
    "- 求对数似然函数的极大值:分别对$\\beta_0$、$\\beta_1$和$\\sigma^2$求偏导数，并令偏导数为0：\n",
    "\n",
    "    - 对$\\beta_0$求偏导：$\\frac{\\partial l}{\\partial \\beta_0}=\\frac{1}{\\sigma^2}\\sum_{i = 1}^{n}(y_i - \\beta_0-\\beta_1x_i)=0$\n",
    "    - 对$\\beta_1$求偏导：$\\frac{\\partial l}{\\partial \\beta_1}=\\frac{1}{\\sigma^2}\\sum_{i = 1}^{n}(y_i - \\beta_0-\\beta_1x_i)x_i=0$\n",
    "    - 对$\\sigma^2$求偏导：$\\frac{\\partial l}{\\partial \\sigma^2}=-\\frac{n}{2\\sigma^2}+\\frac{1}{2(\\sigma^2)^2}\\sum_{i = 1}^{n}(y_i - \\beta_0-\\beta_1x_i)^2=0$\n",
    "\n",
    "通过求解上述方程组，可以得到$\\beta_0$、$\\beta_1$和$\\sigma^2$的极大似然估计值$\\hat{\\beta}_0$、$\\hat{\\beta}_1$和$\\hat{\\sigma}^2$。\n",
    "\n",
    "- 计算极大似然函数值:将得到的极大似然估计值$\\hat{\\beta}_0$、$\\hat{\\beta}_1$和$\\hat{\\sigma}^2$代入对数似然函数$l(\\beta_0,\\beta_1,\\sigma^2)$中，即可得到极大似然函数值：\n",
    "\n",
    "$$l(\\hat{\\beta}_0,\\hat{\\beta}_1,\\hat{\\sigma}^2)=-\\frac{n}{2}\\ln(2\\pi)-\\frac{n}{2}\\ln(\\hat{\\sigma}^2)-\\frac{1}{2\\hat{\\sigma}^2}\\sum_{i = 1}^{n}(y_i - \\hat{\\beta}_0-\\hat{\\beta}_1x_i)^2$$\n",
    "\n",
    "**attention:** 一元线性回归方程$E(y) = \\hat y_i = \\beta_0 + \\beta_1x_i$\n",
    "\n",
    "在多元线性回归模型$y = X\\beta+\\epsilon$中，$y$是$n\\times1$的观测值向量，$X$是$n\\times p$的设计矩阵，$\\beta$是$p\\times1$的参数向量，$\\epsilon\\sim N(0,\\sigma^2I)$，其计算过程与简单线性回归类似，只是涉及到矩阵运算，对数似然函数为$l(\\beta,\\sigma^2)=-\\frac{n}{2}\\ln(2\\pi)-\\frac{n}{2}\\ln(\\sigma^2)-\\frac{1}{2\\sigma^2}(y - X\\beta)^T(y - X\\beta)$，通过对$\\beta$和$\\sigma^2$求偏导并令偏导数为0，可得到极大似然估计值，进而计算出极大似然函数值。"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "379b5b57-b649-4e40-8d53-1022f0d0ef9e",
   "metadata": {},
   "source": [
    "##### **[⑦最小二乘法](https://zhuanlan.zhihu.com/p/128083562)**\n",
    "\n",
    "上面极大似然估计的形式就是最小二乘法的表示方式。"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "bb732ce8-aec6-46a2-a8e8-10742f2f2da3",
   "metadata": {},
   "source": [
    "##### **⑧线性回归做置换检验**\n",
    "\n",
    "问题背景\n",
    "\n",
    "假设我们有一组数据 $(x_i, y_i)$（$i=1,2,\\dots,n$），希望检验 x与y是否存在线性关联（即回归系数 $\\beta_1$ 是否显著非零）。  \n",
    "零假设 $H_0$：x与y独立，即真实回归系数 $\\beta_1 = 0$。  \n",
    "备择假设 $H_1$：x与y相关，即 $\\beta_1 \\neq 0$。\n",
    "\n",
    "\n",
    "置换检验步骤\n",
    "\n",
    "**1. 计算原始数据的检验统计量**  \n",
    "\n",
    "首先在原始数据中计算回归系数 $\\hat{\\beta}_1$（或其对应的t值）。  \n",
    "对于一元线性回归，$\\hat{\\beta}_1 = \\frac{\\sum(x_i - \\bar{x})(y_i - \\bar{y})}{\\sum(x_i - \\bar{x})^2}$。  \n",
    "假设原始数据计算得到 $\\hat{\\beta}_1 = b_{\\text{obs}}$（观测值）。\n",
    "\n",
    "\n",
    "**2. 生成零分布：置换响应变量y**\n",
    "\n",
    "在零假设下，x与y独立，因此可以通过<mark>随机置换y的标签</mark>来破坏x与y的对应关系，生成“零假设成立时的数据集”。具体步骤：  \n",
    "- 置换操作：将y的取值随机打乱顺序，得到新的响应变量 $y^* = (y_{\\pi(1)}, y_{\\pi(2)}, \\dots, y_{\\pi(n)})$，其中 $\\pi$ 是 $\\{1,2,\\dots,n\\}$ 的一个随机排列（即置换）。  \n",
    "- 计算置换后的统计量：对每个置换后的数据集 $(x_i, y^*_i)$，计算回归系数 $\\hat{\\beta}_1^* = b^*$。  \n",
    "- 重复置换：进行 $B$ 次独立置换（如 $B=1000$ 次），得到 $B$ 个置换统计量 $b_1^*, b_2^*, \\dots, b_B^*$，构成零分布。\n",
    "\n",
    "\n",
    "**3. 计算p值**\n",
    "\n",
    "比较原始统计量 $b_{\\text{obs}}$ 与零分布，确定其极端性：  \n",
    "- 若检验方向为双侧（$\\beta_1 \\neq 0$），p值为置换统计量中满足 $|b^*| \\geq |b_{\\text{obs}}|$ 的比例，即：  \n",
    "  $$\n",
    "  p = \\frac{\\text{置换中 } |b^*| \\geq |b_{\\text{obs}}| \\text{ 的次数} + 1}{B + 1}\n",
    "  $$  \n",
    "  （加1是为了包含原始观测值，避免分母为0）  \n",
    "- 若为单侧检验（如 $\\beta_1 > 0$），则计算 $b^* \\geq b_{\\text{obs}}$ 的比例。\n",
    "\n",
    "\n",
    "核心逻辑总结\n",
    "\n",
    "-  零假设下的独立性：置换检验通过随机打乱y的顺序，模拟“x与y无关”的场景，此时回归系数应接近0。  \n",
    "-  零分布的构建：通过多次置换生成大量零假设下的统计量，反映“无关联”时的随机波动。  \n",
    "-  显著性判断：若原始统计量在零分布中极端（如位于前5%或后5%），则拒绝零假设，认为x与y存在真实关联。\n",
    "\n",
    "扩展到多元线性回归\n",
    "\n",
    "对于多元回归 $y = \\beta_0 + \\beta_1x_1 + \\dots + \\beta_kx_k + \\epsilon$，检验某一系数 $\\beta_j$ 时：  \n",
    "- 置换操作仍针对**响应变量y**（保持x矩阵不变，打乱y的顺序），计算每次置换后的 $\\hat{\\beta}_j^*$。  \n",
    "- 零分布基于所有置换中的 $\\hat{\\beta}_j^*$，p值计算逻辑与一元回归一致。  \n",
    "\n",
    "置换检验不依赖正态性假设，适用于小样本或分布未知的数据，核心是通过随机重排破坏变量间关联，构建经验零分布。"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e34d62a6-89af-4acc-84df-a47fec89fdf1",
   "metadata": {},
   "source": [
    "#### **(2)泊松回归**"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "974b08c5-d0e7-4b03-9b53-4ae3f4bdb919",
   "metadata": {},
   "source": [
    "泊松回归（Poisson Regression）是一种回归模型，主要用于对计数数据（即因变量为非负整数，如事件发生的次数）进行建模。以下是具体分析：\n",
    "\n",
    "\n",
    "泊松回归的因变量是计数数据（如某医院一天内的急诊人数、某网站一小时内的点击量），其目标是通过自变量预测因变量的期望值（即平均发生次数），属于回归分析的范畴。\n",
    "\n",
    "泊松回归假设因变量 $ Y $ 服从泊松分布，其概率质量函数为：  \n",
    "  $$\n",
    "  P(Y = k) = \\frac{\\lambda^k e^{-\\lambda}}{k!}, \\quad k = 0, 1, 2, \\dots\n",
    "  $$  \n",
    "  其中，$\\lambda = E(Y)$ 是事件发生的期望值，通过对数链接函数与自变量建立线性关系：  \n",
    "  $$\n",
    "  \\ln(\\lambda) = \\beta_0 + \\beta_1x_1 + \\cdots + \\beta_nx_n\n",
    "  $$  \n",
    "  模型最终输出的是 $\\lambda$ 的估计值，即事件发生的平均次数，属于**连续型的预测值**（尽管因变量是离散计数，但期望值是连续的）。"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "cd513c91-d1a2-4df7-97ee-2f62a97b24b0",
   "metadata": {},
   "source": [
    "最大似然估计的目标是找到使得样本数据出现的概率最大的参数值。对于 n 个独立观测值 $(y_1,x_1),(y_2,x_2),\\cdots,(y_n,x_n)$，其似然函数 $L(\\beta)$ 为各观测值概率的乘积：$$L(\\beta)=\\prod_{i = 1}^{n}\\frac{e^{-\\lambda_i}\\lambda_i^{y_i}}{y_i!}$$\n",
    "对数似然函数：$$L(\\beta)=\\sum_{i = 1}^{n}\\left(-\\lambda_i + y_i\\ln(\\lambda_i)-\\ln(y_i!)\\right)$$由于 $\\ln(y_i!)$ 与 $\\beta$ 无关，在求最大似然估计时可以忽略，所以对数似然函数可简化为：$$L(\\beta)=\\sum_{i = 1}^{n}\\left(-e^{x_i^T\\beta}+y_ix_i^T\\beta\\right)$$\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "be997d6f-c85e-4f3e-b7e6-ab660dcead28",
   "metadata": {},
   "source": [
    "### 2、分类模型"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "83aa40ee-d01e-4f0f-95b8-275162c2ba9e",
   "metadata": {},
   "source": [
    "#### **(1)逻辑回归**"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "7add0ec7-52cb-4329-adc1-561b68ffa5d1",
   "metadata": {},
   "source": [
    "逻辑回归的数学框架起源于线性回归，但通过引入非线性变换（Sigmoid 函数）解决了分类问题。其名称中的 “回归” 更多体现了对线性回归方法的扩展，而非目标本身属于回归任务。"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "41d99643-2f81-4c2b-aec0-f1c3dbeabc62",
   "metadata": {},
   "source": [
    "模型假设$Y$服从二项分布，线性模型的拟合形式为：$$log_e(\\frac{\\pi}{1-\\pi}) = \\beta_0 + \\sum_{j=1}^p\\beta_j X_j$$"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b22c3f0f-853e-46bb-8110-d442afb2a7f4",
   "metadata": {},
   "source": [
    "一个事件的几率（odds）是指该事件发生的概率与该事件不发生的概率的比值取对数，对逻辑斯特回归而言 $\\log{\\frac{P(Y=1|x)}{1-P(Y=1|x)}}=w\\cdot x+b$就是上述的线性模型的拟合形式。"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c0207d1d-8f7d-4196-85af-6027f13f5b25",
   "metadata": {},
   "source": [
    "##### **①二项逻辑斯特回归模型（条件概率分布形式）**\n",
    " $$P(Y=1|x) = \\frac{\\exp(w\\cdot x+b)}{1+\\exp(w\\cdot x+b)}$$\n",
    " $$P(Y = 0|x) = \\frac{1}{1+\\exp(w\\cdot x+b)}$$"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d6fc7701-945a-455e-bf7a-11d467a6569b",
   "metadata": {},
   "source": [
    "设$P(Y=1|x) = \\pi(x),P(Y=0|x) = 1-\\pi(x)$最大似然函数表示为：$$\\prod\\limits_{i=1}^N[\\pi(x_i)]^{y_i}[1-\\pi(x_i)]^{(1-y_i)}$$\n",
    "对数似然函数表示为：$$ L(w,b) = \\sum\\limits_{i=1}^N[y_i\\log\\pi(x_i)+(1-y_i)\\log(1-\\pi(x_i)]=\\sum\\limits_{i=1}^N[y_i(w\\cdot x_i+b) - \\log(1+\\exp(w\\cdot x_i+b)]$$"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "5e519927-c9c5-4ee2-b6ae-a57cb308f8ae",
   "metadata": {},
   "source": [
    "##### **②二项逻辑斯特回归模型（函数形式）**\n",
    "$$\\hat y(x) = \\frac{1}{1+\\exp{-(w\\cdot x+b)}}$$"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d2d65cfc-d918-4df3-9a73-e111c81c76d0",
   "metadata": {},
   "source": [
    "代价函数：$$J(w,b) = -\\frac{1}{N}\\sum\\limits_{i=1}^N[y_i\\log{\\hat y_i}+(1-y_i)log(1-\\hat y_i)]$$\n",
    "最佳解：$$w = -\\frac{1}{N}\\sum\\limits_{i=1}^Nx_i(y_i-\\hat y_i),\\quad b = -\\frac{1}{N}\\sum\\limits_{i=1}^N(y_i-\\hat y_i)$$"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "5f38943d-caef-4cc7-8c00-9e7441f24f82",
   "metadata": {},
   "source": [
    "## （二）降维技术"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "1fd044bc-481b-4b00-8342-33b7e3f466b9",
   "metadata": {},
   "source": [
    "### 1、非监督学习"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "408404f4-9544-4fff-9170-d257d0843826",
   "metadata": {},
   "source": [
    "#### **(1)PCA**"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "306d9282-7fee-488d-8aef-32a4b79cc3df",
   "metadata": {},
   "source": [
    "主成分分析主要用于发现数据结构中的基本结构，利用正交变换把由线性相关变量表示的观测数据转换成少数几个由线性无法变量表示的数据，线性无关的变量称为主成分。(P314)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "0d7eba55-f902-4b5b-81e5-4ae7cc788b01",
   "metadata": {},
   "source": [
    "##### **①奇异值分解**\n",
    "\n",
    "奇异值分解（Singular Value Decomposition，SVD）是一种重要的矩阵分解方法，对于任意一个 $m\\times n$ 的矩阵 A，都可以将其分解为三个矩阵的乘积：$$A = U\\Sigma V^T$$\n",
    "\n",
    "其中：\n",
    "\n",
    "- U 是一个 $m\\times m$ 的正交矩阵，其列向量称为左奇异向量。\n",
    "- $\\Sigma$ 是一个 $m\\times n$ 的对角矩阵，对角线上的元素 $\\sigma_1,\\sigma_2,\\cdots,\\sigma_r$（r 是矩阵 A 的秩）称为奇异值，且满足 $\\sigma_1\\geq\\sigma_2\\geq\\cdots\\geq\\sigma_r > 0$，其余元素均为 0。\n",
    "- V 是一个 $n\\times n$ 的正交矩阵，其列向量称为右奇异向量。"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "79a41409-679f-4df9-a93f-dd9c8e907e99",
   "metadata": {},
   "source": [
    "##### **②奇异值分解步骤**\n",
    "\n",
    "设矩阵A的秩是$r$:\n",
    "  \n",
    "- 计算$A^TA$的特征值向量及特征向量矩阵：$\\Lambda$和$V$(分别由特征值$\\lambda$和单位化后的特征向量$v$组成的向量和列矩阵)。根据特征值从大到小进行排序列矩阵$V$(特征值较大的特征向量放在前面)得到$n$阶正交矩阵$V$；\n",
    "  \n",
    "- 各个特征值按从大到小排序后依次开平方根得到（如果特征值小于0,则设为0）作为$m\\times n$对角矩阵$\\Sigma$的对角线元素（第$i$个对角线元素就是$\\sigma_i$）；\n",
    "  \n",
    "- 对$A$的前$r$个正奇异值，令$u_j = \\frac{1}{\\sigma_j}Av_j,j=1,2,\\cdots r$得到$U_1=[u_1,u_2\\cdots u_r]$这里的$u_j$也是单位化特征向量;求$A^T$的零向量空间的一组标准正交基，也就是求$A^Tx=0$的解。$\\{u_{r+1},u_{r+2},\\cdots,u_{m}\\}$令$U_2 =[u_{r+1},u_{r+2},\\cdots,u_{m}] $并且令$U=[U_1,U_2]$"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "0d722e30-597b-443f-8178-220a4b155f45",
   "metadata": {},
   "source": [
    "##### **③紧奇异值分解和截断奇异值分解：**\n",
    "\n",
    "- 假设$r = Rank(A)\\le\\min(m,n)$则$A = U_r\\Sigma_rV_r^T$则称为紧奇异值分解（秩就是表示矩阵行或者列的最大独立行或列的数量）。\n",
    "  \n",
    "- 在矩阵的分解中，只取$k$个最大的奇异值对应的部分（$k\\lt r$），就得到了截断奇异值分解。$A\\approx U_k\\Sigma_kV_k^T$。大小分别为$m\\times k$，$k\\times k$，$k\\times n$($U_k$和$V_k$就是取前$k$列，$\\Sigma_k$就是取前$k$行$k$列)。"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "3d98800e-8385-4f5d-92e8-e91d87db5342",
   "metadata": {},
   "source": [
    "##### **④奇异值分解定理**\n",
    "    \n",
    "- 定理15.1（奇异值分解基本定理）若A为一$m\\times n$实矩阵，$A\\in R^{(m\\times n)}$,则$A$的奇异值分解存在。\n",
    "  \n",
    "- 定理 15.2 设矩阵$A\\in R^{m\\times n}$,矩阵的秩$rank(A)=r$,并设$M$为$R^{m\\times n}$中所有秩不超过k的矩阵集合，$0<k<r$,则存在一个秩为$k$ 的矩阵$X\\in M$,使得\n",
    "  \n",
    "  $$\n",
    "  \\Vert A-X\\Vert_F = \\min_{S\\in M}\\Vert A-S\\Vert_F\n",
    "  $$\n",
    "  \n",
    "  称矩阵$X$为矩阵$A$在弗洛贝尼乌斯范数意义下的最优近似。\n",
    "  \n",
    "- 定理15.3 设矩阵$A\\in R^{m\\times n}$,矩阵的秩$rank(A)=r$,有奇异值分解$A=U\\Sigma V^T$，并设$M$为$R^{m\\times n}$中所有秩不超过k的矩阵集合，$0<k<r$,若秩为$k$的矩阵$X\\in M$,满足\n",
    "  \n",
    "  $$\n",
    "  \\Vert A-X\\Vert_F = \\min_{S\\in M}\\Vert A-S\\Vert_F\n",
    "  $$\n",
    "  \n",
    "  则\n",
    "  \n",
    "  $$\n",
    "  \\Vert A-X\\Vert_F = (\\sigma_{k+1}^2,\\sigma_{k+2}^2,\\cdots,\n",
    "  \\sigma_n^2)^{\\frac{1}{2}}\n",
    "  $$"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e302f30f-3632-48c2-96f3-5f5c0ef96527",
   "metadata": {},
   "source": [
    "##### **④PCA算法直观解释**\n",
    "\n",
    "数据集合的样本由实数空间（正交坐标系）中的点表示，空间的一个坐标轴表示一个变量，规范化处理后得到的数据分布在原点附近。对原坐标系中的数据进行主成分分析等价于进行坐标系旋转变换，将数据投影到新坐标系的坐标轴上；新坐标系的第一坐标轴、第二坐标轴等分别表示第一主成分、第二主成分等，数据在每一轴上的坐标值的平方表示相应变量的方差；并且，这个坐标系是在所有可能新的坐标系中，坐标轴的方差的和最大的。\n",
    "<img src=\"ML img\\pca\\001.png\" width=600 height=400>\n",
    "\n",
    "上图$x_1$和$x_2$看起来是线性相关的，经过PCA将坐标轴旋转为$y_1$和$y2$，看起来样本点在这两个坐标轴上是随机分不到。\n",
    "\n",
    "##### **⑤PCA算法方差最大化解释：**\n",
    "旋转变换中样本点到原点的距离的平方和保持不变。主成分分析在旋转变换中选取离样本点的距离平方和最小的轴(样本在这个轴上的坐标值的平方和最大)，作为第一主成分。第二主成分的选取，在保证与已选坐标轴正交的条件下，类似地进行。\n",
    "\n",
    "<img src=\"ML img\\pca\\002.png\" width=600 height=400>"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "6dd05a1d-85be-4933-a264-2832ddb9d095",
   "metadata": {},
   "source": [
    "**注意思考：** 总体主成分分析与数值的协方差矩阵和特征向量有什么关系？为什么可以使用奇异值分解来求得主成分？P317\n",
    "\n",
    "**定理16.1** 设$x$是$m$维随机变量，$\\Sigma$是$x$的协方差矩阵，$\\Sigma$的特征值分别是$\\lambda_1\\ge\\lambda_2\\ge\\cdots\\lambda_m\\ge 0$，特征值对应的单位特征向量分别是$\\alpha_1,\\alpha_2,\\cdots,\\alpha_m$，则$x$的第$k$主成分是\n",
    "$$y_k = \\alpha^T_k x = \\alpha_{1k}x_1 +\\alpha_{2k}x_2 + \\cdots +\\alpha_{mk}x_m $$\n",
    "$x$的第$k$主成分的方差是$$var(y_k) = \\alpha_k^T\\Sigma\\alpha_k = \\lambda_k$$即协方差矩阵$\\Sigma$的第$k$个特征值。总主成分的协方差矩阵是对角阵$cov(y) = \\Lambda=diag(\\lambda_1,\\lambda_2,\\cdots,\\lambda_m)$\n",
    "\n",
    "上述定理可以采用拉格朗日乘子法证明。这个定理就表明第k个主成分是$x$的协方差矩阵的第k个特征值对应的特征向量的转置与$x$的点乘。"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ae502b4d-d20a-4c41-be0b-5a2c3a943426",
   "metadata": {},
   "source": [
    "**定理16.2**：当取A的前q列取x的前q个主成分时，能够最大限度地保留原有变量方差的信息。$y=A^Tx$，其中$A$为正交矩阵：\n",
    "$$\\begin{bmatrix}\n",
    "a_{11} & a_{12} & \\cdots &a_{1m}\\\\\n",
    "a_{21} & a_{22} & \\cdots &a_{2m}\\\\\n",
    "\\cdot & \\cdot &  &\\cdot\\\\\n",
    "\\cdot & \\cdot & &\\cdot\\\\\n",
    "\\cdot & \\cdot&  &\\cdot\\\\\n",
    "a_{m1} & a_{m2} & \\cdots &a_{mm}\n",
    "\\end{bmatrix}$$\n",
    "\n",
    "\n",
    "**定义 16.2** 第$k$主成分$y_k$的方差贡献率定义为$y_k$的方差与所有方差之和的比,记作$\\eta_k$\n",
    "$$\\eta_k = \\frac{\\lambda_k}{\\sum\\limits_{i=1}^m\\lambda_i}$$\n",
    "$k$个主成分$y_1,y_2,\\cdots,y_k$的累计方差贡献率定义为$k$个方差之和和所有方差之和的比\n",
    "$$\\sum\\limits_{i=1}^k\\eta_i = \\frac{\\sum\\limits_{i=1}^k\\lambda_i}{\\sum\\limits_{i=1}^m\\lambda_i}$$\n",
    "\n",
    "反映朱成风保留信息的比例，但是不反应对某个变量$x_i$保留信息的比例。"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b65cb1e0-b7a1-4ab2-94fb-819f50a1c46e",
   "metadata": {},
   "source": [
    "**定义 16.3** $k$个主成分$y-1，y_2,\\cdots,y_k$对原有变量$x_i$的贡献率定义为$x_i$与$(y_1，y_2,\\cdots,y_k)$的相关系数的平方，记作$v_i$\n",
    "$$v_i = \\rho^2(x_i,(y_1,y_2,\\cdots,y_k)) = \\sum\\limits_{j=1}^k\\rho^2(x_i,y_j) =  \\sum\\limits_{j=1}^k\\frac{\\lambda_j\\alpha_{ij}^2}{\\sigma_{ii}}$$"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "78796807-867e-40bc-9224-c5948cb659a8",
   "metadata": {},
   "source": [
    "传统的主成分分析通过数据的协方差矩阵或相关矩阵的特征值分解进行，现在常用的方法是通过数据矩阵的奇异值分解进行。"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "eb9fcab1-c266-4f29-9cb4-294edabbd227",
   "metadata": {},
   "source": [
    "**⑥PCA分析算法描述**：\n",
    "\n",
    "- 给定特征维度为$m$，样本数量为$n$的数据矩阵$X$（每一行的元素的均值为零），每个维度$i$（$i\\in m$）做正态化处理也就是$x_{ij} = \\frac{x_{ij}-\\mu_i}{\\sigma_i}$后的数据矩阵，进行转置，再除以$\\sqrt{n-1}$得到新的$n\\times m$标准化矩阵$X'$;\n",
    "  \n",
    "- 对$X'$做奇异值分解即:$X'=U\\Sigma V^T$，其中$V$是$m$阶正交矩阵;\n",
    "  \n",
    "- 如果要对数据$X$做降维到$k$，则取$V^T$的前$k$行作为主成分（也就是$V$的前$k$列作为主成分）后得到$V^T_k$，计算$Y = V_k^T\\cdot X$就是得到的新的降维后$k\\times n$的矩阵。"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "84e9e07c-813a-4432-9b4f-a0dc38b54412",
   "metadata": {},
   "source": [
    "#### **(2)EFA**"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "5b1d9b2d-6573-41c9-9cc3-ffba9027dadb",
   "metadata": {},
   "source": [
    "### 2、监督学习"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "a07388ce-5493-47d5-8d5f-3e3e5b1e5418",
   "metadata": {},
   "source": [
    "#### **(1)LDA**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "ce34419c-6f15-4dbd-9485-54cb40ba83ec",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.19"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
